#pragma once

#include "SceneTree.h"

namespace TreeFunctor
{
	class Delete: public CSceneNodeLeafFunctor
	{
	public:
		virtual mUInt operator ( ) ( CSceneNode * a_Node );
	};

	class UpdateL2W: public CSceneNodeRootFunctor
	{
	public:
		virtual mUInt operator ( ) ( CSceneNode * a_Node );
	};

	class NotifyL2WChanged: public CSceneNodeRootFunctor
	{
	public:
		virtual mUInt operator ( ) ( CSceneNode * a_Node );
	};

	class TreeBoundBox: public CSceneNodeRootFunctor
	{
	private:
		maths::CPointArray m_Points;
		maths::CAABox      m_Box;
		mBool             m_bBoxReaddy;

	public:
		TreeBoundBox           ( );
		virtual mUInt operator ( ) ( CSceneNode * a_Node );
		maths::CAABox &GetBox   ( );
	};
}